<?php

require_once (realpath(dirname(__FILE__)) . "/../models/UsuarioDAO.class.php");

require_once (realpath(dirname(__FILE__)). "/../models/FuncionarioDAO.class.php");

require_once (realpath(dirname(__FILE__)) . "/../config/Auth.class.php");

class UsuarioController {
 
    public function __construct() {

            if (isset($_POST['metodo'])) {
            switch ($_POST['metodo']) {
                case 'save':
                    $this->save();
                    break;
                case 'edit':
                    $this->edit();
                    break;
                case 'autenticar':
                    $this->autenticar();
                    break;
            }
        }

        //Condicional para escolher qual metodo será chamado.
        if (isset($_GET['metodo'])) {
            switch ($_GET['metodo']) {
                case 'delete':
                    $this->delete();
                    break;
                case 'logoff':
                    $this->logoff();
                    break;
            }
        }
    }

    function save() {
        session_start();
        
        $usuario = new Usuario();
        $usuarioDAO = new UsuarioDAO();

        $usuario->setUsuario($_POST['usuario']);
        $usuario->setSenha($_POST['senha']);
        $usuario->setFuncionario_id($_POST['funcionario_id']);
        $usuario->setNivel($_POST['nivel']);

        if($usuarioDAO->save($usuario)){
            $_SESSION['success'] = "Ação realizada com sucesso.";
            
            echo "<script>location.href = '/pat/views/usuario/';</script>";
        }else{
            $_SESSION['error'] = "Não foi possivel realizar a ação.";
            
            echo "<meta HTTP-EQUIV='Refresh' CONTENT='4; URL=/pat/views/usuario'>";
        }
    }

    function listAll() {
        $usuarioDAO = new UsuarioDAO();
        $usuarios = $usuarioDAO->listAll();

        return $usuarios;
    }

    function listById($id) {

        $usuarioDAO = new UsuarioDAO();
        $usuario = $usuarioDAO->listById($id);

        return $usuario;
    }

    function edit() {
        session_start();
        Auth::verificarNivelDeAcesso(1);
        
        
        $usuario = new Usuario();
        $usuarioDAO = new UsuarioDAO();

        $usuario->setId($_POST['id']);
        $usuario->setUsuario($_POST['usuario']);
        $usuario->setSenha($_POST['senha']);
        $usuario->setFuncionario_id($_POST['funcionario_id']);
        $usuario->setNivel($_POST['nivel']);
        
        if($usuarioDAO->edit($usuario)){
            $_SESSION['success'] = "Ação realizada com sucesso.";
            
            echo "<script>location.href = '/pat/views/usuario/';</script>";
        }else{
            $_SESSION['error'] = "Não foi possivel realizar a ação.";
            
            echo "<meta HTTP-EQUIV='Refresh' CONTENT='4; URL=/pat/views/usuario'>";
        }
    }

    function delete() {
        session_start();
        Auth::verificarNivelDeAcesso(1);
        
        $usuario = new UsuarioDAO ();
        
        if($usuario->delete($_GET['id'])){
            $_SESSION['success'] = "Ação realizada com sucesso.";
            
            echo "<script>location.href = '/pat/views/usuario/';</script>";
        }else{
            $_SESSION['error'] = "Não foi possivel realizar a ação.";
            
            echo "<meta HTTP-EQUIV='Refresh' CONTENT='4; URL=/pat/views/usuario'>";
        }
    }
    
    function listAllFuncionarios() {
        $funcionarioDAO = new FuncionarioDAO();

        $funcionario = $funcionarioDAO->listAll();
        return $funcionario;
    }

}

$usuarioController = new UsuarioController();
?>
